Presto ব্যবহার করে Complex Queries এবং Subqueries পরিচালনা করা একটি শক্তিশালী বৈশিষ্ট্য, যা বড় এবং জটিল ডেটা বিশ্লেষণের জন্য উপযুক্ত। এখানে আমরা দেখব কিভাবে Presto-তে জটিল কোয়েরি তৈরি এবং ব্যবহার করা যায়, এবং Subqueries কিভাবে কার্যকরভাবে ব্যবহার করা যায়।
Complex Query সাধারণত একাধিক টেবিল বা ডেটাসোর্সের উপর কাজ করে এবং বিভিন্ন SQL অপারেশন যেমন Joins, Aggregations, Filters, এবং Grouping সমন্বিত করে।
Presto সমর্থন করে বিভিন্ন ধরনের Joins, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN।
উদাহরণ:
SELECT orders.order_id, customers.customer_name, SUM(orders.amount) AS total_amount
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
GROUP BY orders.order_id, customers.customer_name
ORDER BY total_amount DESC;
এই কোয়েরিটি দুটি টেবিল orders
এবং customers
কে INNER JOIN করে এবং প্রতিটি অর্ডারের মোট পরিমাণ হিসাব করে, গ্রাহকের নামের সাথে।
Presto-তে Aggregation Functions যেমন SUM()
, AVG()
, COUNT()
, এবং MAX()
ব্যবহার করা হয় জটিল কোয়েরি তৈরি করতে।
উদাহরণ:
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
ORDER BY average_salary DESC;
এখানে employees
টেবিল থেকে প্রতি বিভাগে গড় বেতন বের করা হয়েছে।
WHERE এবং HAVING ক্লজ ব্যবহার করে Filters যোগ করা হয়। WHERE কোয়েরির শুরুর দিকে ডেটা ফিল্টার করে, এবং HAVING গ্রুপিংয়ের পরে ডেটা ফিল্টার করে।
উদাহরণ:
SELECT department, COUNT(*) AS num_employees
FROM employees
WHERE salary > 50000
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY num_employees DESC;
এই কোয়েরিটি দেখায় যে কোন কোন বিভাগের ৫০,০০০ টাকার বেশি বেতন পাওয়া কর্মচারী আছে এবং সেই বিভাগে কমপক্ষে ৫ জন কর্মচারী রয়েছে।
Subqueries হল একটি কোয়েরি যা আরেকটি কোয়েরির মধ্যে ব্যবহৃত হয়। Subquery সাধারণত WHERE, FROM, অথবা SELECT ক্লজের মধ্যে অন্তর্ভুক্ত করা হয়।
এটি সাধারণত একটি ভ্যালু বা আউটপুট পাওয়ার জন্য ব্যবহৃত হয়, যা মূল কোয়েরির WHERE ক্লজে ফিল্টার করার জন্য ব্যবহৃত হয়।
উদাহরণ:
SELECT employee_name, salary
FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');
এখানে, Subquery প্রথমে Sales
বিভাগের department_id বের করে, এবং মূল কোয়েরি তার মাধ্যমে employees টেবিল থেকে সেই বিভাগের কর্মচারীদের বের করে।
কখনো কখনো সাবকোয়েরি মূল কোয়েরির একটি অংশ হিসেবে ব্যবহার করা হয়, যেমন একটি কাস্টম কলাম তৈরি করা।
উদাহরণ:
SELECT employee_name,
(SELECT department_name FROM departments WHERE departments.department_id = employees.department_id) AS department
FROM employees;
এখানে, সাবকোয়েরি প্রতিটি কর্মচারীর জন্য তাদের department_name সংগ্রহ করে এবং তা একটি নতুন কলামে department
নামে যোগ করে।
Correlated Subquery এমন একটি সাবকোয়েরি যা মূল কোয়েরির প্রতিটি সারির জন্য একটি আলাদা সাবকোয়েরি চালায়। এটি মূল কোয়েরির প্রতিটি রেকর্ডের উপর নির্ভরশীল।
উদাহরণ:
SELECT employee_name, salary
FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);
এখানে, সাবকোয়েরি প্রতিটি কর্মচারীর department_id এর জন্য গড় বেতন বের করে এবং তারপর প্রধান কোয়েরি সেই কর্মচারীদের নির্বাচন করে, যাদের বেতন গড় বেতনের চেয়ে বেশি।
EXPLAIN
for Query Plan:উপসংহার
Presto তে Complex Queries এবং Subqueries ব্যবহারের মাধ্যমে আপনি জটিল ডেটা বিশ্লেষণ কার্যকরভাবে করতে পারেন। সঠিকভাবে সাবকোয়েরি এবং জটিল কোয়েরি ব্যবহার করলে বড় ডেটাসেটের উপর কার্যকরী এবং দ্রুত বিশ্লেষণ করা সম্ভব।
common.read_more